package com.hu.system.mapper;

import java.util.List;

import com.hu.system.domain.StockOutbound;
import org.apache.ibatis.annotations.Param;

/**
 * 备货出库Mapper接口
 *
 * @author hu
 * @date 2025-01-21
 */
public interface StockOutboundMapper {
    /**
     * 查询备货出库列表
     *
     * @param stockOutbound 备货出库
     * @return 备货出库集合
     */
    public List<StockOutbound> selectStockOutboundList(StockOutbound stockOutbound);

    /**
     * 新增备货出库
     *
     * @param stockOutbound 备货出库
     * @return 结果
     */
    public int insertStockOutbound(StockOutbound stockOutbound);

    /**
     * 修改备货出库
     *
     * @param stockOutbound 备货出库
     * @return 结果
     */
    public int updateStockOutbound(StockOutbound stockOutbound);

    /**
     * 删除备货出库（软删除）
     *
     * @param outboundId 出库ID
     * @return 结果
     */
    public int deleteStockOutboundByOutboundId(Long outboundId);

    /**
     * 批量删除备货出库（软删除）
     *
     * @param outboundIds 出库ID数组
     * @return 结果
     */
    public int deleteStockOutboundByOutboundIds(Long[] outboundIds);

    /**
     * 根据SKU列表批量软删除备货出库记录
     *
     * @param skus SKU列表
     * @return 结果
     */
    public int deleteStockOutboundBySkus(List<String> skus);

    /**
     * 批量新增备货出库
     *
     * @param stockOutboundList 备货出库列表
     * @return 结果
     */
    public int batchInsertStockOutbound(List<StockOutbound> stockOutboundList);

    /**
     * 根据备货单号和SKU查询备货出库
     *
     * @param stockOrderNo 备货单号
     * @param sku SKU编码
     * @return 备货出库对象
     */
    public StockOutbound selectByStockOrderNoAndSku(@Param("stockOrderNo") String stockOrderNo, @Param("sku") String sku);

    /**
     * 根据备货单号和SKU更新备货出库（完全覆盖）
     *
     * @param stockOutbound 备货出库对象
     * @return 结果
     */
    public int updateByStockOrderNoAndSku(StockOutbound stockOutbound);
}

